#ifndef cathlibcpp_stdexcept_H
#define cathlibcpp_stdexcept_H

// File:       stdexcept.h
// Author:     (c) Miles Sabin, 1996
// Purpose:    approximation to ANSI C++ standard exception classes


#ifndef cathlibcpp_config_H
#include "config.h"
#endif

#ifndef cathlibcpp_exception_H
#include "exception.h"
#endif

#ifndef cathlibcpp_ptypeinfo_H
#include "ptypeinfo.h"
#endif


class logic_error : public exception
{
  public:

    logic_error(char const* what_arg);
    ~logic_error();

    char const* what() const;

    RTTI_SCAFFOLDING_DECL

  private:

    char const* what_;
};

class domain_error : public logic_error
{
  public:

    domain_error(char const* what_arg);
    ~domain_error();

    RTTI_SCAFFOLDING_DECL
};

class invalid_argument : public logic_error
{
  public:

    invalid_argument(char const* what_arg);
    ~invalid_argument();

    RTTI_SCAFFOLDING_DECL
};

class length_error : public logic_error
{
  public:

    length_error(char const* what_arg);
    ~length_error();

    RTTI_SCAFFOLDING_DECL
};

class out_of_range : public logic_error
{
  public:

    out_of_range(char const* what_arg);
    ~out_of_range();

    RTTI_SCAFFOLDING_DECL
};

class runtime_error : public exception
{
  public:

    runtime_error(char const* what_arg);
    ~runtime_error();

    char const* what() const;

    RTTI_SCAFFOLDING_DECL

  private:

    char const* what_;
};

class range_error : public runtime_error
{
  public:

    range_error(char const* what_arg);
    ~range_error();

    RTTI_SCAFFOLDING_DECL
};

class overflow_error : public runtime_error
{
  public:

    overflow_error(char const* what_arg);
    ~overflow_error();

    RTTI_SCAFFOLDING_DECL
};

#endif
